昨天我們對於 React 元件有了初步的認識,
接著讓我們來探討一個關鍵的問題。
React 元件會根據它的屬性,來決定顯示的 HTML
就像是設定 HTML 屬性一樣,我們可以將 JavaScript 的值輸入給元件屬性,這樣元件就能根據屬性來顯示。
以先前的 App.js
為例,第 29 行的 Welcome
元件有個屬性 numUsers
,他的值代表上線的使用者數量。這裡設定為 3
(第 10 行),所以顯示的 HTML 會是 Let's chat with 2 friends。
接下來我們可以來看看 Welcome.js
裡記載 Welcome
元件產生 HTML 的邏輯。
可以看到其實 Welcome
元件其實就是個函式,元件屬性就是函數參數,回傳值就是 JSX。輸出的 HTML 其實是 small
元素,其文字內容用大括號包住 JS 表達式。表達式裡面根據屬性判斷來顯示文字。
看到這裡,你對於 React 元件有什麼感覺呢?
個人認為它在兩個方面讓開發者有很好的體驗:
React 元件的單方向資料流特性,其實和 Node-RED 的 node 有許多共同之處。元件和 node 都像是函數一樣,將資料一進一出做單方向的轉換。React 應用和 node-RED 應用一樣,都是將小單元以「串接」「包裝」等操作,組合成大型應用和來實現複雜的邏輯。
?讀讀 MessageCardGroup.js
,你知道他是如何以 JS 陣列產生 HTML 的嗎?